import java.util.Scanner;
/**
 * Created With IntelliJ IDEA
 * Description:PTA：三元组顺序表表示的稀疏矩阵转置Ⅱ
 * User: DELL
 * Data: 2022-11-23
 * Time: 0:07
 */

//设a和b为三元组顺序表变量，分别表示矩阵M和T。要求按照a中三元组的次序进行转置，并将转置后的三元组置入b中恰当的位置。
//输入格式:
//        输入第1行为矩阵行数m、列数n及非零元素个数t。
//        按行优先顺序依次输入t行，每行3个数，分别表示非零元素的行标、列标和值。
//输出格式:
//        按置入b中的顺序输出置入的位置下标，转置后的三元组行标、列标和值，数据之间用空格分隔，共t行。
//输入样例1:
//            3 4 3
//            0 1 -5
//            1 0 1
//            2 2 2
//输出样例1:
//            1 1 0 -5
//            0 0 1 1
//            2 2 2 2

class Main {
    public static void main(String[] args) {
        int m = 0;
        int n = 0;
        int t = 0;
        Scanner scanner = new Scanner(System.in);
        m = scanner.nextInt();
        n = scanner.nextInt();
        t = scanner.nextInt();
        int[][] src = new int[t][3];
        for (int i = 0; i < t; i++) {
            src[i][0] = scanner.nextInt();
            src[i][1] = scanner.nextInt();
            src[i][2] = scanner.nextInt();
        }
        int[][] dst = new int[t][3];
        //转置稀疏矩阵
        //tmp数组先记录每一个列号出现的次数
        int[] tmp = new int[n];
        for (int i = 0; i < t; i++) {
            tmp[src[i][1]]++;
        }
        //将tmp数组转化，转化后tmp[i]表示为转置后的矩阵的第i行的第一个非零元素在dst中的行数
        int buf = tmp[0];
        tmp[0] = 0;
        for (int i = 1; i < n; i++) {
            int buf2 = tmp[i];
            tmp[i] = tmp[i-1] + buf;
            buf = buf2;
        }
        //根据tmp[]矩阵，输出结果矩阵
        for (int i = 0; i < t; i++) {
            System.out.println(tmp[src[i][1]] + " " + src[i][1] + " " + src[i][0] + " " + src[i][2]);
            tmp[src[i][1]]++;
        }
        return;
    }
}